#include <cstdio>
#include <algorithm>
using namespace std;
int read(){
	char c=getchar();int x=0;
	while(c<48||c>57) c=getchar();
	do x=x*10+(c^48),c=getchar();
	while(c>=48&&c<=57);
	return x;
}
const int N=8003;
const int B=13500;
const int R=300;
int n,h[N];
short f[N][N],mx;
int q[R][B],sq[R];
int nq[R][B],snq[R];
inline void chmx(int x,int y,short w){
	if(f[x][y]<w){
		f[x][y]=w;
		if(mx<w) mx=w;
		nq[w][snq[w]++]=x*(n+1)+y;
	}
}
short w1[N],w2[N],w3[N],w4[N];
int main(){
	freopen("build.in","r",stdin);
	freopen("build.out","w",stdout);
	n=read();
	for(int i=1;i<=n;++i) h[i]=read();
	for(int t=n-1;t;--t){
		for(int x=1;x+t<=n;++x) if(h[x]+t<=n) w1[x]=f[x][h[x]]+1;
		for(int x=1;x+t<=n;++x) if(h[x]>t) w2[x]=f[x][h[x]-t]+1;
		for(int x=1+t;x<=n;++x) if(h[x]+t<=n) w3[x]=f[x-t][h[x]]+1;
		for(int x=1+t;x<=n;++x) if(h[x]>t) w4[x]=f[x-t][h[x]-t]+1;
		for(short w=mx;w;--w)
			for(int i=0;i<sq[w];++i){
				int u=q[w][i]/(n+1);
				int v=q[w][i]-u*(n+1);
				chmx(u+1,v,w);
				chmx(u,v+1,w);
				chmx(u+1,v+1,w);
			}
		for(int x=1;x+t<=n;++x) if(h[x]+t<=n) chmx(x+1,h[x]+1,w1[x]);
		for(int x=1;x+t<=n;++x) if(h[x]>t) chmx(x+1,h[x]-t,w2[x]);
		for(int x=1+t;x<=n;++x) if(h[x]+t<=n) chmx(x-t,h[x]+1,w3[x]);
		for(int x=1+t;x<=n;++x) if(h[x]>t) chmx(x-t,h[x]-t,w4[x]);
		int cur=B;
		for(short w=mx;w;--w){
			sq[w]=min(cur,snq[w]);snq[w]=0;cur-=sq[w];
			for(int i=0;i<sq[w];++i) q[w][i]=nq[w][i];
		}
	}
	for(int i=1;i<=n;++i) if(mx<f[i][h[i]]+1) mx=f[i][h[i]]+1;
	printf("%d\n",n-(int)mx);
	return 0;
}
